# DataFrame 是Pandas 中最常用的二维数据结构
# 它类似于数据库表、Excel 表格或 SQL 查询结果
# DataFrame 有行索引和列索引，可以根据索引对数据进行筛选、切片、操作等

import pandas as pd

# 创建一个简单的DataFrame
data = {'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]}
df = pd.DataFrame(data)
# 显示DataFrame
print(df)

# 创建 DataFrame 时指定行索引
df = pd.DataFrame(data,index=['x','y','z'])
print("创建DataFrame时指定索引")
print(df)

# 访问列
print(df['A']) # 输出 Series 类型的数据

# 可以通过点操作访问列（注意：列名必须是有效的 Python 标识符）
print(df.A)

# 访问行
# 访问单行数据
print("使用行索引访问单行数据")
print(df.loc['x']) # 使用行索引进行访问,返回的也是Series
print(type(df.loc['x']))

# 切片操作
# 选择部分列
print(df[['A','B']])
# 选择部分行
print(df[1:3]) # 返回第二行到第三行的数据（行索引 1 到 2）


# 修改数据
# 修改单个值
print("修改单个值")
df.at['x','A'] = 10
print(df)

# 修改整列
print("修改整列")
df['B'] = [11,12,13]
print(df)

# Series和DataFrame之间的关系
# `Series` 是 `DataFrame` 的一列
# 可以将 `DataFrame` 的某一列提取出来，它会返回一个 `Series`。
# 同时，`Series` 也可以作为 `DataFrame` 的一部分。
# 提取列，返回一个 Series
column_a = df['A']
print(column_a)

# 将Series添加到DataFrame
df['D'] = pd.Series([14,15,16],index=['x','y','z'])
print(df)